﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once
#include "GcmpDevService.h"

namespace gcmp
{
    class IProgressObserver;

    /// \brief 进度报告管理器
    ///
    /// 用户重写的IProgressObserver需注册入进度报告管理器中
    class GCMP_DEV_SERVICE_EXPORT IProgressReporterManager
    {
    public:
        /// \brief 获取进度报告管理器
        /// \return 进度报告管理器
        static IProgressReporterManager* Get();

        /// \brief 注册进度观察者
        /// \param pObserver 进度观察者
        /// \return 成功返回true，失败返回false
        virtual bool AddProgressObserver(IProgressObserver *pObserver) = 0;

        /// \brief 删除进度观察者
        /// \param pObserver 进度观察者
        /// \return 成功返回true，失败返回false
        virtual bool DeleteProgressObserver(IProgressObserver *pObserver) = 0;
        
        /// \brief 析构函数
        virtual ~IProgressReporterManager(){}
    };
}
